package vista.ventanaEstadoTarea;

import java.awt.event.ActionEvent;
import java.util.Date;

import javax.swing.JOptionPane;

import modelo.exception.NoPuedeIniciarException;
import modelo.exception.SameStateException;
import modelo.exception.StatusChangeException;

/**
 * @author Cristian
 * extiende de ButtonAction.
 * */
public class BotonReabrirTarea extends ButtonAction{

	//Constructor *********************************************************** //
	public BotonReabrirTarea(VentanaTarea modelo){
		super(modelo);
	}

	/**
	 * Boton que determina el estado de la tarea.
	 * Cambia el estado de la tarea de Cerrado a Iniciado.
	 * Solo se cambia a ese estado cuando el estado es cerrado, de lo contrario 
	 * lanza una excepcion.
	 * Escribe en un txt la fecha en la que se reabrio y el comentario.
	 * Modifica el label de estado.
	 * @exception SameStateException.
	 * @exception StatusChangeException.
	 * @exception NoPuedeIniciarException.
	 * */
	public void actionPerformed(ActionEvent e) {
		try {	
			Date dateCerrado = new Date();
			this.ventana.getModelo().reabrirTarea(this.ventana.getTextReabrir().getText());
			this.ventana.getEstado().setText(this.ventana.getModelo().getEstado().getNombre());
			this.escribir("TAREA REABIERTA: "+ dateCerrado);
			this.escribir(this.ventana.getTextReabrir().getText());
			
		} catch (SameStateException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar al mismo estado",
					"Error", JOptionPane.ERROR_MESSAGE);

		} catch (StatusChangeException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar de estado",
					"Error", JOptionPane.ERROR_MESSAGE);
		} catch (NoPuedeIniciarException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede iniciar, deben finalizar las tareas que la componen",
					"Error", JOptionPane.ERROR_MESSAGE);
		}

	}

}
